/*	
 *  Ariana Mendez  CI. 20809626
 *  Andreina Soto  CI. 19344230
 *  Maria Rojas    CI. 20470046
 *  Silmary Guedez CI. 19696689
 */

package Codigos;

import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Vector;
import java.util.Scanner;

public class Principal {

	public Profesor CargarProfesor(){
		Scanner scan = new Scanner(System.in);
		Profesor prof;
		int ced;
		String nombre,apellido,titulo;
		System.out.println("*******ASIGNAR PROFESOR*******");
		System.out.println("Introduzca cedula del Profesor:");
		ced=scan.nextInt();
		System.out.println("Introduzca el nombre del Profesor:");
		nombre=scan.next();
		System.out.println("Introduza Apellido del Profesor:");
		apellido=scan.next();
		System.out.println("Introduzca el titulo academico:");
		titulo=scan.next();
		prof=new Profesor(nombre,apellido,ced,titulo);
		return prof;
	}
	public int CargarSeccion(){
		Scanner scan = new Scanner(System.in);
		
		int nums;
		System.out.println("*******CARGAR SECCION*******");
		System.out.println("Introduzca numero de la seccion:");
		nums=scan.nextInt();
		return nums;
		
	}

	public Alumno CargarAlumno(Seccion seccion){
	
		Alumno Estudiante;
	
		Scanner scan=new Scanner(System.in);
		String nombre,apellido;
		int ced;
		
		System.out.println("********INSCRIBIR ESTUDIANTE********");
		System.out.println("Introduzca cedula del estudiante:");
		ced=scan.nextInt();

		Estudiante=seccion.BuscarAlumno(ced);
		if((Estudiante==null)&&(seccion.getNumseccion()!=0)){
		System.out.println("Introduzca el nombre del estudiante:");
		nombre=scan.next();
		System.out.println("Introduza Apellido del estudiante:");
		apellido=scan.next();
		Estudiante=new Alumno(nombre,apellido,ced);
		
		return Estudiante;
		
	}
	    else{
	    	System.out.println("========MENSAJE========");
	    	System.out.println("debe asignar seccion");
	    	return Estudiante=null;
	    }
		
}
	

	public void Busqueda(Seccion seccion){
		int ced;
		Scanner scan = new Scanner(System.in);
		System.out.println("********BUSCAR ESTUDIANTE********");
		System.out.println("Introduzca cedula del estudiante");
		ced=scan.nextInt();
		Alumno alumno=new Alumno();
		alumno=seccion.BuscarAlumno(ced);
		if(alumno!=null){
		System.out.println("*********DATOS DEL ESTUDIANTE********");
		System.out.println("Nombre:" + alumno.getNombre());
		System.out.println("Apellido:"+alumno.getApellido());
		}
		else{
			System.out.println("========MENSAJE========");
			System.out.println("Estudiante no Existe");
		}
	}

	public void RealizarEvaluacion(Seccion seccion){
		System.out.println("********PRESENTAR EVALUACIONES********");
		
		if((seccion.getListaAlumno().size()!=0)&&(seccion.getTutorseccion()!=null)&&(seccion.getNumseccion()!=0))  
		{
	
		System.out.println("Evaluaciones Realiazadas");
		seccion.PresentarEvaluaciones();
		 }
		
		else{
			System.out.println("========MENSAJE========");
			System.out.println("Revisar si hay Alumno inscritos, profesor asignado o seeccion asignada");
		}
	}

	public void RetirarEstudiante(Seccion seccion){
		int ced;
		Scanner scan=new Scanner(System.in);
		
		System.out.println("********RETIRAR ESTUDIANTE********");
		System.out.println("Ingrese cedula del estudiante a retirar");
		ced=scan.nextInt();
		if(seccion.RetirarAlumno(ced)==true){
			System.out.println("========MENSAJE========");
			System.out.println("Estudiante Retirado");
		}
		else{
		    System.out.println("========MENSAJE========");
			System.out.println("Estudiante no se ha inscrito");
		}
		
	}
	public void PromedioNota(Seccion seccion){
		System.out.println("********PROMEDIO********");
		System.out.println("Promedio de notas es: "+seccion.PromedioNota());
	}

	public void Listados(Seccion seccion){
		int resp;
      
		Vector<Alumno> aux;
	    aux=new Vector<Alumno>();
		Scanner scan=new Scanner(System.in);
		System.out.println("********************LISTADOS********************");
		System.out.println("1-Listado de estudiantes ordenados por cedula");
		System.out.println("2-Listado de estudiantes ordenados por nota final");
		System.out.println("3-Listado de estudiantes aprobados");
		System.out.println("4-Listado de estudiantes aplazados");
        resp=scan.nextInt();
		int i;
		
		switch (resp) {
		
		
		       case 1:aux=seccion.OrdenadosCedula();
		       System.out.println("*****LISTADO DE ESTUDIANTES ORDENADOS POR CEDULA*****");
		       if(aux.size()!=0){
		    	   
				      System.out.println("Cedula  "+"    Nombre  " +"   Apellido  "+"    Nota   "+"  Status");
				    for(i=0;i<aux.size();i++){
					    System.out.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"      "+aux.elementAt(i).getApellido()+"       "+aux.elementAt(i).getNotafinal()+"       "+aux.elementAt(i).getStatus());
			   }
				FileWriter fichero = null;
				   PrintWriter c = null;
			   try
		       {
		           fichero = new FileWriter("OrdenadoPorCedula.txt");
		           c = new PrintWriter(fichero);
		           c.println("Cedula  "+"  Nombre  " +"  Apellido  "+"   Nota   "+" Status");
		           for(i=0;i<aux.size();i++){
		        	    
			        c.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"   "+aux.elementAt(i).getApellido()+"     "+aux.elementAt(i).getNotafinal()+"     "+aux.elementAt(i).getStatus());
		           }

		       } catch (Exception e) {
		           e.printStackTrace();
		       } finally {
		          try {
		          if (null != fichero)
		             fichero.close();
		          } catch (Exception e2) {
		             e2.printStackTrace();
		          }
		       }
		       
		       }
		       break;
		       case 2: aux=seccion.OrdenadosNotaFinal();
		       if(aux.size()!=0){
		    	   
				    for(i=0;i<aux.size();i++){
					    System.out.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"      "+aux.elementAt(i).getApellido()+"       "+aux.elementAt(i).getNotafinal()+"       "+aux.elementAt(i).getStatus());
				    }
			   FileWriter ficheronota = null;
			   PrintWriter n = null;
			   try
			   
		       {
		           ficheronota = new FileWriter("OrdenadosPorNota.txt");
		           n = new PrintWriter(ficheronota);
		           n.println("Cedula  "+"  Nombre  " +"  Apellido  "+"   Nota   "+" Status");
				   
		           for(i=0;i<aux.size();i++)
		        	 {
		        	   
		        	   n.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"   "+aux.elementAt(i).getApellido()+"     "+aux.elementAt(i).getNotafinal()+"     "+aux.elementAt(i).getStatus());
			           }

		       } catch (Exception e) {
		           e.printStackTrace();
		       } finally {
		          try {
		          if (null != ficheronota)
		        	  ficheronota.close();
		          } catch (Exception e2) {
		             e2.printStackTrace();
		          }
		       }
				    }
		       
			   break;
		       case 3:aux=seccion.ListaAprobados();
		       if(aux.size()!=0){
		    	   if(aux.size()!=0){
		    		   
		    		    System.out.println("Seccion numero:"+ seccion.getNumseccion());
					    System.out.println("Cedula  "+"    Nombre  " +"   Apellido  "+"    Nota   "+"  Status");
					    for(i=0;i<aux.size();i++){
						    System.out.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"      "+aux.elementAt(i).getApellido()+"       "+aux.elementAt(i).getNotafinal()+"       "+aux.elementAt(i).getStatus());
					    }
			   FileWriter ficheroAprobado = null;
			   PrintWriter a = null;
		       try
		       {
		           ficheroAprobado = new FileWriter("ListaAprobados.txt");
		           a = new PrintWriter(ficheroAprobado);
		           a.println("Cedula  "+"  Nombre  " +"  Apellido  "+"   Nota   "+" Status");
				   
		           for(i=0;i<aux.size();i++)
		           {
		        	   a.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"   "+aux.elementAt(i).getApellido()+"     "+aux.elementAt(i).getNotafinal()+"     "+aux.elementAt(i).getStatus());
		           }
		       }
                  catch (Exception e) {
		           e.printStackTrace();
		       } finally {
		          try {
		          if (null != ficheroAprobado)
		        	  ficheroAprobado.close();
		          } catch (Exception e2) {
		             e2.printStackTrace();
		          }
		       }
		       }
		       }
		        break;
		       case 4:
	          aux=seccion.ListaAplazado();
		      if(aux.size()!=0){
		    	  if(aux.size()!=0){
		    		  
	
					  System.out.println("Cedula  "+"    Nombre  " +"   Apellido  "+"    Nota   "+"  Status");
					    for(i=0;i<aux.size();i++){
						    System.out.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"      "+aux.elementAt(i).getApellido()+"       "+aux.elementAt(i).getNotafinal()+"       "+aux.elementAt(i).getStatus());
				    }
			   FileWriter ficheroAplazado = null;
			   PrintWriter p = null;
		       try
		       {
		    	   ficheroAplazado = new FileWriter("ListaAplazados.txt");
		           p = new PrintWriter(ficheroAplazado);
		           p.println("Cedula  "+"  Nombre  " +"  Apellido  "+"   Nota   "+" Status");
				 
		           for (i=0;i<aux.size();i++)
		           {
		        	   p.println(aux.elementAt(i).getCedula()+"   "+aux.elementAt(i).getNombre()+"   "+aux.elementAt(i).getApellido()+"     "+aux.elementAt(i).getNotafinal()+"     "+aux.elementAt(i).getStatus());
		           }

		       } catch (Exception e) {
		           e.printStackTrace();
		       } finally {
		          try {
		          if (null != ficheroAplazado)
		             ficheroAplazado.close();
		          } catch (Exception e2) {
		             e2.printStackTrace();
		          }
		       }
		      }
		}
	}
	}
	public static void main(String[] args) {

		int resp=0;
		Seccion seccion;
        int r=0;	
		
		seccion = new Seccion(r);
		Scanner scan = new Scanner(System.in);
		
		Principal pantalla;
		pantalla=new Principal();
		boolean inscripciones = true;
	    
		do
		{
		System.out.println("****SIMULACION DE LABORATORIO1****");
		System.out.println("Introduzca <1> para asignar la seccion");
		System.out.println("Introduzca <2> para asignar un profesor");
		System.out.println("Introduzca <3> para inscribir estudiante");
		System.out.println("Introduzca <4> para retirar un estudiante");
		System.out.println("Introduzca <5> para realizar busqueda de algun estudiante");
		System.out.println("Introduzca <6> para realizar evaluaciones");
		System.out.println("Introduzca <7> para ver resumen de Listados");
		System.out.println("Introduzca <8> para ver Promedio de notas");
		System.out.println("Introduzca <9> para salir");
		resp=scan.nextInt();
		
		switch (resp) {
		case 1:
		
			if(seccion.getNumseccion()!=0){
			
				System.out.println("========MENSAJE========");
				System.out.println("La seccion ya tiene un numero asignado");
			}
			else{
				r=pantalla.CargarSeccion();
				seccion.setNumseccion(r);
				System.out.println("========MENSAJE========");
				System.out.println("Numero Seccion:"+seccion.getNumseccion());
			}
		
		
		break;
		case 2:
		
	
			if((seccion.getTutorseccion()==null &&(seccion.getNumseccion()!=0))){
			Profesor prof=new Profesor();
			prof=pantalla.CargarProfesor();
			seccion.setTutorseccion(prof);
			System.out.println("========MENSAJE========");
			System.out.println("Profesor Asignado:  " +prof.getApellido() +" " +prof.getNombre());
			System.out.println("Seccion Asiganada:"+seccion.getNumseccion());
			}
		
		else{
			System.out.println("========MENSAJE========");
		
		System.out.println("Profesor Asignado o Seccion no asignada");
		}
		
	
	
			break;
		case 3:
			
			if(inscripciones==true){
			    Alumno Estudiante;
		 
		       Estudiante = new Alumno();
		       Estudiante=pantalla.CargarAlumno(seccion);
		       if(Estudiante!=null){
			   seccion.InscribirAlumno(Estudiante);
			   System.out.println("========MENSAJE========");
		       System.out.println("Estudiante ingresado seccion");
		       }
		       else
		           {
		    	   System.out.println("========MENSAJE=======");
		    	   System.out.println("Estudiante ya inscrito");
		    	   }
			   }
		       else{
		    	   System.out.println("========MENSAJE========");
		    	   System.out.println("Periodo de inscripciones ya cumplido");
		       }
		       break;
		case 4: 
			
			  if(inscripciones==true){
		      pantalla.RetirarEstudiante(seccion);
			  }
			  else  {    
				  System.out.println("========MENSAJE========");
				System.out.println("Estudiante ya fue evaluado");
		   }
	
		break;
		
		case 5:
			
				pantalla.Busqueda(seccion);
			
			
		break;
		case 6: 
			if(inscripciones!=false){
				pantalla.RealizarEvaluacion(seccion);
			}
			else{
				System.out.println("========MENSAJE========");
		    	System.out.println("Periodo de inscripciones ya cumplido");
			}
		
		inscripciones=false;
		break;
		case 7:if(inscripciones==false){
			   pantalla.Listados(seccion);
		}
		else{
			 System.out.println("========MENSAJE========");
			System.out.println("Aun no se han presentado evaluaciones");
		}
        break;
		case 8:
			if(inscripciones==false){
			pantalla.PromedioNota(seccion);}
			else{
				System.out.println("========MENSAJE========");
				System.out.println("Aun no se han presentado evaluaciones");
			}
		break;
		}//fin del switch
		
		
		}while(resp!=9);

	}//fin del main

}
